package com.hardware.view.service;

import javafx.application.Platform;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Modality;
import javafx.stage.Stage;
import lombok.extern.slf4j.Slf4j;

import java.io.IOException;

/**
 * @作者 韩宗森
 * @创建时间 2024年10月31日 9:29
 */
@Slf4j
public class MainService {


    /**
     * 打开测试窗口
     */
    public void openTest() {
        try {
            // 加载xml布局
            Parent parent = FXMLLoader.load(getClass().getResource("/xml/TestView.fxml"));

            // 场景 不设置宽高,就是自适应
            Scene scene = new Scene(parent);
            // 创建窗口对象
            Stage stage = new Stage();
            // 设置窗口标题
            stage.setTitle("测试");
            // 设置串口图标
            stage.getIcons().add(new Image("image/logo.png"));
            // 把场景设置到窗口
            stage.setScene(scene);
            // 是否能改变窗口大小 默认: 是
            stage.setResizable(false);
            // APPLICATION_MODAL: 只活动当前窗口,父窗窗口不能点
            stage.initModality(Modality.APPLICATION_MODAL);
            // 显示窗口
            stage.show();

        } catch (IOException e) {
            log.error("资源加载异常 ... ");
            e.printStackTrace();
            Platform.runLater(() -> {
                // 处理异常，例如显示错误消息
                System.err.println("打开【测试窗口】时发生错误: " + e.getMessage());
            });
        }

    }

    /**
     * 打开 爱迪尔门锁接口配置 窗口
     */
    public void openInterfaceSet() {
        try {
            // 加载xml布局
            Parent parent = FXMLLoader.load(getClass().getResource("/xml/InterfaceSetView.fxml"));

            // 场景 不设置宽高,就是自适应
            Scene scene = new Scene(parent);
            // 创建窗口对象
            Stage stage = new Stage();
            // 设置窗口标题
            stage.setTitle("爱迪尔门锁接口配置");
            // 设置串口图标
            stage.getIcons().add(new Image("image/logo.png"));
            // 把场景设置到窗口
            stage.setScene(scene);
            // 是否能改变窗口大小 默认: 是
            stage.setResizable(false);
            // APPLICATION_MODAL: 只活动当前窗口,父窗窗口不能点
            stage.initModality(Modality.APPLICATION_MODAL);
            // 显示窗口
            stage.show();

        } catch (IOException e) {
            System.out.println("资源加载异常 ... ");
            e.printStackTrace();
            Platform.runLater(() -> {
                // 处理异常，例如显示错误消息
                System.err.println("打开【接口配置窗口】时发生错误: " + e.getMessage());
            });
        }
    }

    /**
     * 密码窗口
     */
    public void openChangePwd() {
        try {
            // 加载xml布局
            Parent parent = FXMLLoader.load(getClass().getResource("/xml/PasswordView.fxml"));

            // 场景 不设置宽高,就是自适应
            Scene scene = new Scene(parent);
            // 创建窗口对象
            Stage stage = new Stage();
            // 设置窗口标题
            stage.setTitle("请输入管理员密码");
            // 设置串口图标
            stage.getIcons().add(new Image("image/logo.png"));
            // 把场景设置到窗口
            stage.setScene(scene);
            // 是否能改变窗口大小 默认: 是
            stage.setResizable(false);
            // APPLICATION_MODAL: 只活动当前窗口,父窗窗口不能点
            stage.initModality(Modality.APPLICATION_MODAL);
            // 显示窗口
            stage.show();

        } catch (IOException e) {
            System.out.println("资源加载异常 ... ");
            e.printStackTrace();
            Platform.runLater(() -> {
                // 处理异常，例如显示错误消息
                System.err.println("打开【请输入管理员密码窗口】时发生错误: " + e.getMessage());
            });
        }
    }

    /**
     * 功能测试 窗口
     */
    public void functionTest() {
        try {
            // 加载xml布局
            Parent parent = FXMLLoader.load(getClass().getResource("/xml/FunctionView.fxml"));

            // 场景 不设置宽高,就是自适应
            Scene scene = new Scene(parent);
            // 创建窗口对象
            Stage stage = new Stage();
            // 设置窗口标题
            stage.setTitle("功能测试");
            // 设置串口图标
            stage.getIcons().add(new Image("image/logo.png"));
            // 把场景设置到窗口
            stage.setScene(scene);
            // 是否能改变窗口大小 默认: 是
            stage.setResizable(false);
            // APPLICATION_MODAL: 只活动当前窗口,父窗窗口不能点
            stage.initModality(Modality.APPLICATION_MODAL);
            // 显示窗口
            stage.show();

        } catch (IOException e) {
            System.out.println("资源加载异常 ... ");
            e.printStackTrace();
            Platform.runLater(() -> {
                // 处理异常，例如显示错误消息
                System.err.println("打开【功能测试窗口】时发生错误: " + e.getMessage());
            });
        }
    }
}
